www.aeom.ho.ua Розробили: проф. Сидоренко В.В., викл. Дóренський О.П., 2006-2011
ЛАБОPАТОPНА PОБОТА № 2
ТЕМА: Програмування інтервального таймера в IBM PC.
МЕТА: Набути навичок з програмування мікросхеми і8253/і8254, використання інтервального таймера на платі IBM PC / АТ для розв’язку інженерних задач та розробки системних функцій.
Короткі теоретичнi вiдомостi
Сучасні комп’ютери оснащено двома підсистемами таймерів, які паралельно відраховують поточний час. Один таймер розміщено у мікросхемі з низьким споживання енергії (КМОП-мікросхема), яка після вимкнення живлення комп’ютера продовжує функціонувати, отримуючи енергію від вбудованого у комп’ютер аккумулятора (батареї). Цей таймер, як правило, називають годинником реального часу (RTC), більш детально з який познайомимось у лабораторній роботі №3. Інший таймер, реалізований мікросхемою і8253 (вітчизняний аналог – КР580ВН53, в AT – і8254), який надалі будемо називати інтервальним (іноді в літературі – системним), працює, як і решта вузлів комп’ютера, тільки коли ПК увімкнений. Його канал 0 генерує сигнали з частотою приблизно 18,206 Гц, яка викликає апаратні переривання рівня 0 (вектор 08h). Обробник даного переривання, який входить у систему BIOS, з кожним перериванням інкрементує вміст 4-байтної чарунки за адресою 40h:6Ch, яка розміщена у області даних BIOS і називається таймером BIOS або системним таймером. В процесі початкового завантаження комп’ютера програма BIOS чатає показники RTC (години, хвилини та секунди) і, перетворивши їх в кількість секунд від початку поточної доби, множить отриману велечину на 18,206, щоб отримати поточний час, виражене у кількості тактів системного таймера. Ця величина записується у чарунку пам’яті за адресою 40h:6Ch, яка у подальшому інкрементується, що є паралельним з RTC відліком часу системи, поки комп’ютер увімкнений. Саме з цієї чарунки пам’яті системні функції читають поточний час.
Інтервальний 3-канальний таймер, який, як правило, входить до складу багатофункціональної мікросхеми програмованого периферійного контролера, забезпечує в ІВМ РС три функції: відлік системного часу, керування регенерацією динамічної пам’яті та генерація звука в динаміку комп’ютера (таблиця 2.1). В останній процедурі приймає участь один з портів периферійного контролера (порт 61h). На рисунку 2.1 наведено спрощену схему взаємодії цих вузлів.
Таблиця 2.1 – Призначення каналів системного таймера в IBM PC
Канал
Призначення
Режим роботи
0
системний годинник (IRQ0)
3, лічильник = 0 (65536)
1
запит для каналу 0 DMA
2, лічильник=18
2
генерація звуку
задається прикладною програмою
Підсистема таймера працює незалежно від процесора (паралельно з ним) від власного генератора, який генерує сигнали з частотою 1,19318 МГц, тобто кожний такт має тpивалiсть 0,84 мксек. До складу таймера входять буфер шини даних, схема управлiння введенням-виведенням та три незалежних канали, кожний з яких мiстить регiстр режиму, схему управлiння каналом, буфер та 16-розрядний лiчильник. Фіксатори каналів (регістри константи перерахунку) адресуються через порти 40h, 41h, 42h відповідно (дуже легко запам’ятати адреси: порт 40h – канал 0, порт 41h – канал 1, порт 42h – канал 2), 43h – порт керуючого слова (таблиця 2.1).
Таблиця 2.2 – Адреси портів системного таймера та їх призначення
Адреса
Операція
Призначення
40h
Запис
Завантаження лiчильника каналу 0
Читання
Читання лiчильника каналу 0
41h
Запис
Завантаження лiчильника каналу 1
Читання
Читання лiчильника каналу 1
42h
Запис
Завантаження лiчильника каналу 2
Читання
Читання лiчильника каналу 2
43h
Запис
Запис керуючого слова системного таймера
Програмування всіх каналів таймера здійснюється однаково: в регістр команд (порт 43h) записується керуюче слово, формат якого наведено на рисунку 2.1, потім у фіксатор завантажується константа перерахунку (один або два байти) і відразу після чого канал починає роботу.
Під час увімкнення комп’ютера у регістр константи п...